package guiTegoNieBedzie;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;

import entities.*;

public class PacjentDAO extends DAO implements PacjentDaoInter{

	public boolean dodajPacjenta(Pacjent p) {
				
		String sql = "INSERT INTO Pacjent (imie, nazwisko, pesel, ulica, numer, kodPocztowy, miasto, telefon, email) " +
				"VALUES('"+p.getImie() +"','"+p.getNazwisko() +"','"+p.getPesel()+"','"+p.getUlica() +"','"+p.getNumerUlicy() +"','"+p.getKodPocztowy() +"','"+p.getMiasto() +"','"+p.getTelefon() +"','"+p.getEmail()+"')";
		//System.out.println(sql);
		try 
		{
			this.db.dbSqlUpdate(sql);
			this.db.dbCommit();
			return true;
		}
		catch (SQLException e) 
		{
			e.printStackTrace();
			return false;
		}

	}

//	@Override
	public LinkedList<Pacjent> getListaPacjentow() {
		
		LinkedList<Pacjent> listaPacjentow = new LinkedList<Pacjent>();
		try 
		{
			
			ResultSet wynik = this.db.dbSqlQuery( "SELECT pacjentID, imie, nazwisko, pesel, ulica, numer, kodPocztowy, miasto, telefon, email FROM Pacjent" );
			while( wynik.next() )
			{
				Pacjent pacjent = new Pacjent(wynik.getInt( "pacjentID" ), wynik.getString( "imie" ), wynik.getString( "nazwisko" ), wynik.getString( "pesel" ), wynik.getString( "ulica" ), wynik.getString( "numer" ), wynik.getString( "kodPocztowy" ), wynik.getString( "miasto" ), wynik.getString( "telefon" ), wynik.getString( "email" ));
				listaPacjentow.add( pacjent );
			}
			return listaPacjentow;
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}

		
	}

//	@Override
	public LinkedList<Pacjent> szukajPacjenta(Pacjent pacjent) 
	{
		
		LinkedList<Pacjent> listaPacjentow = new LinkedList<Pacjent>();
		String sql = "SELECT pacjentID, imie, nazwisko, pesel, ulica, numer, kodPocztowy, miasto, telefon, email FROM Pacjent WHERE pesel LIKE '%"+pacjent.getPesel()+"%' AND imie LIKE '%"+pacjent.getImie()+"%' AND nazwisko LIKE '%"+pacjent.getNazwisko()+"%'";
		//System.out.println( sql );
		try 
		{
			ResultSet wynik = this.db.dbSqlQuery( sql );
			while( wynik.next() )
			{
				Pacjent pacjent1 = new Pacjent(wynik.getInt( "pacjentID" ), wynik.getString( "imie" ), wynik.getString( "nazwisko" ), wynik.getString( "pesel" ), wynik.getString( "ulica" ), wynik.getString( "numer" ), wynik.getString( "kodPocztowy" ), wynik.getString( "miasto" ), wynik.getString( "telefon" ), wynik.getString( "email" ));
				listaPacjentow.add( pacjent1 );
			}
			return listaPacjentow;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return listaPacjentow;
	}
	
//	@Override
	public int ostatnieIdPacjenta() {

		int ostatnieId = -1;

		try 
		{
			String sql ="SELECT IDENT_CURRENT('Pacjent') as \"id\"";
			ResultSet wynik = this.db.dbSqlQuery( sql);
			while( wynik.next() )
			{
				ostatnieId = wynik.getInt("id");

			}
			return ostatnieId;
		} 
		catch(SQLException e) 
		{
			e.printStackTrace();
			return ostatnieId;
		}

	}


}
